Place this on a block of your choice:

FFAILM @ HERE !
: TEST 1 2 3 ;

VARIABLE ROW  VARIABLE COL  0 ROW !
: BL 32 ;
: CENTRE DUP 2/ XMAX 1- 2/ SWAP - ROW @ GOTOXY TYPE 2 ROW +! 0 COL ! ; 
: TYPEW 7 MIN COL @ 8 * 1+ ROW @ GOTOXY TYPE COL @ 1+ 5 MOD DUP COL ! 0= 
  IF 1 ROW +! THEN ; 
: LDAP 0 ROW ! PAGE S" Loaded Utilities" CENTRE LATEST 7 FOR @ NEXT 
  BEGIN @ DUP DUP 6000$ >= SWAP 8000$ U< AND IF 1 ELSE DUP DUP 2+ @ 15 AND 
  SWAP 4 + SWAP TYPEW 0 THEN UNTIL DROP 2 ROW +! ; 
: AVAP S" Available Applications" CENTRE COL @ ROW @ GOTOXY 1 FOR 
  ." Application   BLK   " NEXT 1 FOR ." -----------   ---   " NEXT ; 
: AV: BL WORD COMPILE (S") DUP DUP , -ROT HERE SWAP CMOVE DUP HERE + H ! ALIGN
  COMPILE TYPE 14 SWAP - [COMPILE] LITERAL COMPILE SPACES BL WORD DUP 3 SWAP -
  ?DUP 0> IF 0 DO COMPILE LIT 48 , COMPILE EMIT LOOP THEN NUMBER DROP COMPILE
  LIT , COMPILE . COMPILE LIT 2 , COMPILE SPACES ; IMMEDIATE



\ Place this in the NEXT block...

: MENU LDAP AVAP 
AV: DIARY 44  AV: CALENDAR 90  AV: HANOI 87 CR ; MENU
FFAIHM @ HERE !





Now, in block one, you want

<block> LOAD

Where BLOCK is the block you selected above.

As you can probably see from the above, the available apps have
to be entered manually. You do this using a very simple syntax,
inside the MENU word.

AV: APP-NAME BLOCK

AV: simply means 'the following is available'


Hope it's what you were looking for. There's some fairly heavy
code in there. Do you want me to explain how the code works?

